package jm.coll.map;

import java.util.HashMap;
import java.util.Objects;

/**
 * @Description HashMap 树化 和 扩容
 * @date 2022/4/4 9:01
 */
public class HashMapToTree {
    public static void main(String[] args) {
        diffHash();
    }

    public static void sameHash(){
        HashMap<A,String > map = new HashMap<>();
        for (int i = 0; i < 12; i++) {
            // 对象的hashCode 相同， 但是equals不同，所以这里也有12条数据
            map.put(new A(i),"Hello Map");
        }
        System.out.println(map);
    }

    public static void diffHash(){
        HashMap<Integer ,String > map = new HashMap<>();
        for (int i = 0; i < 20; i++) {
            map.put((int) (Math.random() * 100),"A");
        }
    }
}
class A{
    private int num;

    public A(int num){
        this.num = num;
    }

    // 重写当前对象的hashCode，使其全部一样
    // hash值相同，新加入对象就不会占用table空间，是以链表的方式添加到后面
    @Override
    public int hashCode() {
        return 100;
    }

    @Override
    public String toString() {
        return "A{" +
                "num=" + num +
                '}';
    }
}
